Page table entry consolidation

ABSTRACT

A method includes identifying, by a processor, a first page table entry (PTE) of a page table for translating virtual addresses to main storage addresses, the page table comprising a second page table entry contiguous with the second page table entry, determining with the processor whether the first PTE may be joined with the second PTE, the determining based on the respective pages of main storage being contiguous, and setting a marker in the page table for indicating that the main storage pages of identified by the first PTE and second PTEs are contiguous.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/517,738, filed Jun. 14, 2012, the disclosure of which is incorporatedby reference herein in its entirety.

BACKGROUND

The present invention relates to managing memory page tables in aprocessing system, and more specifically, to joining page table entriesin a processing system.

Processors including central processing units (CPUs) may use translationlookaside buffers (TLB) as caches that improve virtual addresstranslation speed. The TLBs are used to map virtual and physicaladdresses spaces and includes page table entries that map the virtualaddresses to the physical addresses.

Several address translation mechanisms are used in computer systems. InPowerPC® by IBM, for example, an effective address is translated to acorresponding real address by way of page table entries found byselecting an ESID table entries associated with the effective address,and using the entry to locate a group of page table entry by way of ahashing algorithm. In zArchitecture®, also by IBM, for another example,an effective address is translated to a corresponding real address byway of a hierarchy of translation tables, translation tables are indexedby a portion of the effective address to find the address of the nexttranslation table of the hierarchy until a real (or absolute) address isobtained. Thus, the PowerPC address translation maps a 64 bit effectiveaddress (of a large range of memory (2⁶⁴ bytes)) in only 2 levels (anSLB table entry and page table entry), while zArchitecture hierarchicaladdress translation requires 5 tables to translate a large effectiveaddress range (2⁶⁴ bytes). Both address translation mechanisms provideadvantages to respective operating systems.

EP690386A1 1996 Jan. 3 “Address translator and method of operation”,incorporated herein by reference teaches a CAM/SRAM structure (44)performs address translations that are compatible with asegmentation/paging addressing scheme yet require only a single look-upstep. Each entry in the effective-to-real-address-translator has two CAMfields (ESID, EPI) that independently compare an input segmentidentifier and an input page identifier to a stored segment identifierand a stored page identifier, respectively. The ERAT outputs a storedreal address field (DATA) associated with a stored segment-stored pagepair if both comparisons are equivalent. The ERAT can invalidate storedtranslations on the basis of segment or page granularity by requiringeither a segment or a page CAM field match, respectively, during aninvalidate operation.

U.S. Pat. No. 8,103,851B2 2012 Jan. 24 “Dynamic address translation withtranslation table entry format control for identifying format of thetranslation table entry” incorporated herein by reference teaches anenhanced dynamic address translation facility. In one embodiment, avirtual address to be translated and an initial origin address of atranslation table of the hierarchy of translation tables are obtained.An index portion of the virtual address is used to reference an entry inthe translation table. If a format control field contained in thetranslation table entry is enabled, the table entry contains a frameaddress of a large block of data of at least 1M byte in size. The frameaddress is then combined with an offset portion of the virtual addressto form the translated address of a small 4K byte block of data in mainstorage or memory.

SUMMARY

Embodiments include a method form managing page table entries thatincludes identifying, by a processor, a first page table entry (PTE) ofa page table for translating virtual addresses to main storageaddresses, the page table comprising a second page table entrycontiguous with the second page table entry, determining with theprocessor whether the first PTE may be joined with the second PTE, thedetermining based on the respective pages of main storage beingcontiguous, and setting a marker in the page table for indicating thatthe main storage pages of identified by the first PTE and second PTEsare contiguous

Additional features and advantages are realized through the techniquesof the present invention. Other embodiments and aspects of the inventionare described in detail herein and are considered a part of the claimedinvention. For a better understanding of the invention with theadvantages and the features, refer to the description and to thedrawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The forgoing and other features, and advantages ofthe invention are apparent from the following detailed description takenin conjunction with the accompanying drawings in which:

FIG. 1 illustrates a processing system according to an embodiment of thepresent invention;

FIG. 2A illustrates an example of a high-level view of a virtual memory(VM) mapped to a physical memory using the Hash PTE (PowerPC) method;

FIG. 2B illustrates an example of a method for generating a virtualaddress;

FIG. 2C illustrates an example of a hashed page table (HPT) translationstructure used by the Power ISA;

FIG. 3 depicts a Hierarchical translation mechanism;

FIG. 4 illustrates an indexing of high level translation tables;

FIGS. 5A and 5B include an exemplary page table in accordance with anembodiment of the present invention;

FIG. 5C illustrates another exemplary embodiment of a page table;

FIG. 6 illustrates a block diagram of an exemplary method for creatingentries in the page table of FIG. 5A in accordance with an embodiment ofthe present invention;

FIG. 7 illustrates block diagram of an exemplary method for accessing amemory location using the page table of FIG. 5B in accordance with anembodiment of the present invention;

FIG. 8 illustrates block diagram of an exemplary method for deleting orinvalidating a PTE using the page table of FIG. 5B in accordance with anembodiment of the present invention;

FIG. 9 includes another exemplary embodiment of a page table;

FIG. 10 illustrates block diagram of an exemplary method for accessing amemory location using the page table of FIG. 9; and

FIG. 11 illustrates an exemplary embodiment of a computer programproduct.

DETAILED DESCRIPTION

Previous systems have used large page support (e.g., pages greater than4 kB) to allow more memory to be translated without a translationlookaside buffer (TLB) miss. However, previous systems use directsupport from the operating system to use large pages. Such anarrangement may result in problems occurring when different page sizesare used in the system. The embodiments described below allow largepages to be managed directly in the hardware of the system such that theoperating system does not need to incorporate management of large pagesat the operating system level. Thus, greater utilization of the TLB maybe achieved as a given number of TLB entries may translate a largeraddress space.

In another embodiment, large pages are directly allocated by theoperating system, but not representable by the page table formats andsizes. An example of this may be a large page in a radix table, wherethe large page corresponds to a small-number multiple (and less than amemory region translated by a level in the radix table).

Turning now to FIG. 1, an exemplary embodiment of processor system(system) 100, in generally shown. The system 100 includes a processor(CPU) 102 that includes a memory management unit/TLB portion 104 and acache 106. The processor 102 is communicatively connected to a memoryportion 108 having a cache 110 and an input/output (I/O) portion 112.The I/O portion 112 is communicatively connected to external I/O devices114 that may include, for example, data input devices, sensors, andoutput devices such as displays.

FIG. 2A illustrates an example of a high-level view of a virtual memory(VM) 201 mapped to a physical memory 203 using the Hash page table entry(PTE) method as used by PowerPC for example. In the example, programsonly use sections A and B of the VM. All segments of VM are mapped tosegment ID (SID) entries identified by effective segment IDs (ESIDs) 205(ESIDs for B and ESIDs for A included). The “effective address” 207 usedby the program selects an SID entry having the ESID value and a virtualsegment ID (VSID) value. The VSID value represents the high-order bitsof a “virtual address” to be used by a hashing algorithm. A hashed valuebased on the VSID is used to locate a page table entry (PTE). The pagetable entry includes an address of a page of physical memory 203.

FIG. 2B illustrates an example of a method for generating a virtualaddress 202 for hashing. In this regard, an effective address 204 isreceived in a memory management unit of a processor that includeseffective segment identifier (ESID) field 206, a page field 208 and byteoffset (byte field) 210 field. A segment lookaside buffer (SLB) 212 isaccessed, and an entry with the ESID 206 of the effective address 204 islocated in the SLB 212. The entry with the ESID 206 includes anassociated virtual segment identifier (VSID) 214. The associated VSID isused to generate the virtual address 202 that includes the VSID 214 inthe SLB 212 associated with the ESID 206 of the effective address 204;and the page 208 and byte 210 from the effective address 204. Thevirtual address 202 may be used to access physical memory in the memorysystem. In this disclosure, the terms physical memory, real memory,system memory and absolute memory will be used interchangeably to referto the main storage, accessible to a processor.

FIG. 2C illustrates an example of a hashed page table (HPT) translationstructure used by the PowerPC, Power ISA is further described in detailin the Power ISA™ Version 2.06 Revision B specification incorporatedherein by reference. The ESID portion 206 of the effective address (EA)204 is used to locate an entry in the SLB 212. The entry includes a VSIDfield 214. The value of the VSID field 214 and a portion of the EA 204are hashed to produce a hashed value that is used to locate a page tablegroup 252 in the page table (HPT) 250. The PTEs of the group 252 aresearched to locate a corresponding PTE having a field matching a valueof a most-significant-portion of the VSID. When a corresponding PTE isfound, the address of the physical memory page in the PTE is used toaccess physical memory. In order to improve performance, once a PTEentry is found, the EA 204 portion and address of the physical memorypage found in the PTE are stored in the TLB 254, such that furtheraccesses to the same EA page will “hit” in the TLB 254 and avoid the PTEsearch. The page table is located by a page table origin addressprovided by the processor.

When a PTE 252 is found in the group that corresponds to the hashedvalue, the address of the physical memory page in the PTE is used toaccess physical memory. In order to improve performance, once a PTEentry is found, the EA 204 portion and address of the physical memorypage found in the PTE are stored in the TLB 254, such that furtheraccesses to the same EA page will “hit” in the TLB 254 and avoid the PTEsearch. The page table is located by a page table origin addressprovided by the processor.

The IBM zArchitecture Principles of Operation SA22-7832-8 and IntelItanium Architecture Software Developer's Manual Volume 2: SystemArchitecture, Document Number: 245318-005 each incorporated by referenceherein include descriptions of other address translation schemes using ahierarchy of translation tables.

FIG. 3 depicts an example Hierarchical translation table translationmechanism. In this case, translation tables are provided for translatingall of the virtual memory 302, though only regions A and B are to beused. The origin of the highest order translation table of thehierarchical translation tables 304, is provided, for example, by acontrol register (CR3) 306. The effective address 308 is used to indexinto each table of the hierarchical translation tables 304 to determinean origin address of the next table to locate, for example, a page tableentry (PTE) having an address of a page of physical memory 310.

FIG. 4 shows the highest level translation table of the hierarchy is“indexed” by the high portion of the effective address 308 a to locate aTable 1 entry 402 a that is used to locate the next translation table(Table 2). Similarly a next portion of the effective address 308 b isused to index into Table 2 to find a Table 2 entry 402 b having theorigin address of Table 3. A next portion of the effective address 308 cis used to index into Table 3 to find a Table 3 entry 402 c having anorigin address of a table 304. A next portion of the effective address308 d is used to index into the Table 304 to locate a page table entry402 d having the address of a physical memory page 406. The origin ofthe hierarchy of translation tables, in an embodiment, may include atable selector field for determining which of said hierarchy oftranslation tables, the origin applies. Thus, the translation mayrequire only a subset of the hierarchy (wherein an effective address islimited to include a predetermined number of most significant bitshaving a zero value). A translation using fewer tables will be fasterthan one using more tables.

FIGS. 5A and 5B include an exemplary embodiment of a page table 501 thathas a page table entry number field 502, an effective/virtual address(virtual address) field 504, a physical address field 506, a valid field508, and a marker field 510. In this regard, the page table entry numberfield 502 is for illustration purposes as it is a (for the sake of theillustrated example) 9-bit index used to access the array of 512 PTEs(#0-511) in page table 501. The virtual address field 504 is used in ahashed environment and hash discards parts of the virtual address. In anon-hashed environment, the virtual address is implicitly specified bythe walk through the radix tree and does not need to be specified in thePTE. (see 308 a-d in FIG. 4). The physical address field 506 includesthe physical address the operating system has associated with a givenvirtual address 504. The valid field 508 indicates that the contents fora given PTE found in page table 501 are valid. 510: The marker bit/field510 will be described in further detail below.

PTEs of FIGS. 5A and 5B may, for example, be used in conjunction with anHPT translation structure (of FIG. 2C). The Intel IA64 architecture isfurther described in detail in the Intel Itanium Architecture SoftwareDeveloper's Manual Revision 2.3 incorporated herein by reference. Theexemplary operation of the system 100 and the use of the page table 501will be discussed below. The virtual address field 502 is optional andmay be used in a hashed environment.

FIG. 5C illustrates a plurality of page table entries of a page table304 in accordance with another embodiment in conjunction with the radixtree-based translation of FIG. 4. In accordance with this embodiment,page table entries include a physical address 505, valid bit 507, andpage properties bits (marker) 509. In the illustrated embodiment, a pagetable entry is extended with a marker bit to mark several pages as beingpart of a virtual address block corresponding to a larger contiguousrange of address exceeding the size of a single page. A single hardwaretranslation entry (such as an entry in a TLB, ERAT, or other suchtranslation structure) to translate multiple page table entries,achieving increased hardware translation structure efficiency is used.

Though the illustrated embodiments describe a system using 16 kB blockshaving four adjacent entries, alternate embodiments may use any suitablememory arrangement or scheme having blocks of any suitable size andnumbers of entries. In an exemplary embodiment, the number of entries isspecified by writing to a configuration register (not shown). In anotherembodiment, a field in the PTE 501 specifies the number of entries. Inyet another exemplary embodiment, multiple configuration registers areprovided corresponding to multiple radix table levels, establishingmulti-entry translation granularity when a higher level directories(such as the page middle directory or the page upper directory) candirectly translate larger base page sizes separately for each directorylevel. If the number of entries is fixed in an implementation as animplementation-specific characteristic in accordance with one exemplaryembodiment, a query function may be used to obtain the number of entriesin a block.

In this regard, FIG. 6 illustrates a block diagram of an exemplarymethod for creating entries in the page table 501 (of FIG. 5A) for thesystem 100 (of FIG. 1). Referring to FIG. 6, in block 602, an allocationroutine is started for a virtual address. In the illustrated example,the allocation routine will add a mapping for the virtual address 003000to the physical address 123456780000B000. In block 604, the entries inthat same 16 kB virtual address block (entries 0, 1, and 2) as thevirtual address 003000 are identified. The physical addresses of theentries are analyzed to determine whether the entries may be joined inblock 606. The determination is made by, for example, confirming thatthe entries 0, 1, and 2 are valid. Each physical address stored in theentries including the physical address that will be installed in entry 3is logically ANDed with the value 3FFF (16383), which is one byte lessthan the size of the virtual address block (for a 16 kB virtual addressblock). The result from each PTE is 1234567800008000. If the result isthe same from each PTE, then the four PTEs may be joined. If no, a pagetable entry is created for the virtual address 003000. In theillustrated example, the page table entries in the virtual address blockmay be joined. Thus, in block 610, a page table entry for the virtualaddress 003000 is generated mapping to the physical address123456780000B000. TLB invalidate instructions are issued to invalidateall valid TLB entries spanning the virtual addresses contained in thevirtual address block in block 612. In block 614, a marker in the markerfield 510 is set for each PTE in the virtual address block. FIG. 5Billustrates an exemplary embodiment of the resultant page table 501following the performance of the method described above. If the hardwaretranslation lookup is not successful, the operating system may start anallocation routine for a virtual address.

A TLB has a fixed number of slots that contain page table entries, whichmap virtual addresses to physical addresses. The virtual memory is thespace seen from a process. This space is segmented in pages of aprefixed size. The page table (generally loaded in memory) keeps trackof where the virtual pages are loaded in the physical memory. The TLB isa cache of the page table; that is, only a subset of its content isstored.

The TLB references physical memory addresses in its table. It may residebetween the CPU and the CPU cache, between the CPU cache and primarystorage memory, or between levels of a multi-level cache. The placementdetermines whether the cache uses physical or virtual addressing. If thecache is virtually addressed, requests are sent directly from the CPU tothe cache, and the TLB is accessed only on a cache miss. If the cache isphysically addressed, the CPU does a TLB lookup on every memoryoperation and the resulting physical address is sent to the cache. Thereare pros and cons to both implementations. Caches that use virtualaddressing have for their key part of the virtual address plus,optionally, a key called an “address space identifier” (ASID). Cachesthat do not have ASIDs must be flushed every context switch in amultiprocessing environment.

In a Harvard architecture or hybrid thereof, a separate virtual addressspace or memory access hardware may exist for instructions and data.This can lead to distinct TLBs for each access type.

FIG. 7 illustrates a block diagram of an exemplary method for accessinga memory location using the page table 501 (of FIG. 5B). In this regard,referring to FIG. 7, in block 702, a memory access routine is started toaccess the memory location 001000. In block 704, the PTE for 001000 islocated and read. In block 705, the system 100 determines whether thePTE is valid. If no, the operating system is invoked to process a PTEfault in block 707. The system 100 determines whether a marker is set inthe marker field 510 (of FIG. 5B) in block 706. If no, the physicaladdress is retrieved from the PTE associated with the virtual address inblock 708, and the physical address may be used to access the memorylocation by the processor. If the marker is set, in block 710, the pagesize is determined (in a similar manner as discussed above), and thestart location of the page is sent to the processor for accessing thememory location. The start location of the page is identified when themarker is set in the PTE by performing an AND operation with the virtualand physical address in the PTE with the one's complement of one lessthan the size of the 16 kB virtual address block to obtain avirtual-address-block virtual and physical address to be mapped.(16384−1=16383=3FFF) The one's complement is FFFFFFFFFFFFC000, which isthen ANDed with the virtual and physical addresses. In block 712, thephysical address is retrieved (e.g., 000000 pointing to 16 kB block at123457800009000) for the PTE pointing to the start location of the page.The virtual-address-block virtual and physical addresses are installedin a hardware translation entry, in conjunction with page tableattributes stored in a PTE in accordance with FIG. 5C.

Those skilled in the art will understand that when avirtual-address-block is translated by a single hardware entry,attributes for all addresses mapped by a single hardware translationentry are consistent.

In one aspect of an embodiment, method of FIG. 7 is augmented to checkfor equivalence. In another embodiment, FIG. 7 is applied to pages oflike translation properties (e.g., to pages containing instructionsrelative to other pages containing instructions, or pages containing tonormal application data mapped in cacheable and writable manner relativeto other normal application data mapped in cacheable and writablemanner, or to read-only data relative to other read-only data, and soforth.)

In one aspect, no hardware check is performed to ensure consistent pageproperties. In another aspect, hardware checks all marked page PTEsprior to installing a virtual-address-block for compatible attributes.If said check fails, in one embodiment, a virtual-address-blocktranslation is not installed as an entry. In one aspect, a softwareerror notification is raised (e.g., by way of an exception reported toone of an operating system and a hypervisor). In another aspect, ahardware translation entry is installed corresponding to a single PTE isinstalled and the marker is ignored.

Those skilled in the art will understand that when multiple PTEs areused to map a range of a virtual-address-block that virtual and physicaladdresses will be contiguous.

In one aspect, no hardware check is performed to ensure contiguousphysical addresses are being mapped by PTEs marked as members of avirtual-address-block.

In another aspect, hardware checks all marked page PTEs prior toinstalling a virtual-address-block for contiguous physical addresses. Ifsaid check fails, in one embodiment, a virtual-address-block translationis not installed as an entry. In one aspect, a software errornotification is raised (e.g., by way of an exception reported to one ofan operating system and a hypervisor). In another aspect, a hardwaretranslation entry is installed corresponding to a single PTE isinstalled and the marker is ignored.

FIG. 8 illustrates block diagram of an exemplary method for deleting orinvalidating a PTE using the page table 501 (of FIG. 5B). In thisregard, referring to FIG. 8, in block 802, a deletion/invalidationroutine that is operative to remove a translation from the page table501 for the virtual address 002000 is started. The PTE for the virtualaddress and the associated address block is located in block 804. If amarker in the marker field 510 is not set in block 806, in block 808,the system issues a TLB invalidate instruction for the PTE with thevirtual address. In block 810, the PTE for the virtual address is markedinvalid in the valid field 508 (of FIG. 5B). If the marker in the markerfield 510 is set, in block 812, the marker in the marker field 510 isremoved for all PTEs in the virtual address block of the virtual address(e.g., 0, 1, and 3, following an identification of the PTEs in thevirtual address block of the virtual address (e.g., 0, 1, 2, 3). Oncethe markers are removed, TLB invalidate instructions are issued for allPTEs in the virtual address block of the virtual address in block 814.The PTE of the virtual address (002000) is marked invalid in the validfield 508 in block 816.

FIG. 9 includes another exemplary embodiment of a page table 901 thathas a page table entry number field 902, an effective/virtual address(virtual address) field 904, a physical address field 906, a valid field908, and a marker field 910, and a remaining function bits field 912.The exemplary operation of the system 100 (of FIG. 1) and the use of thepage table 901 will be discussed below.

In the page table 901, the marker fields 910 of the PTEs 0 and 1 areset, which indicates that the virtual address block is an 8 kB block.The set indication of the PTEs 0 and 1 indicates to the system 100 thatthe PTEs 0 and 1 should be accessed as larger PTEs, and the fieldsindicated by the “###” (fields 906 b and 912 b) are available to storeadditional data or information. In one embodiment, additional pageproperties are stored in the additional bits of such a PTE. In anotherembodiment, additional physical address bits may be stored in theseadditional bits of such a PTE, allowing the system to address physicaladdresses not otherwise accessible. In one aspect of the embodiment,this can be used to map an extended memory region using large pages thatis not addressable by physical addresses that can be stored in a normalPTE. The set indication of the PTEs 0 and 1 along with the validindications in the valid field 908 also indicates to the system thatboth PTEs 0 and 1 should be read when a memory access routine isperformed.

FIG. 10 illustrates block diagram of an exemplary method for accessing amemory location using the page table 701 (of FIG. 7). In this regard,referring to FIG. 10, in block 1002, a memory access routine is startedto access the memory location 001000. In block 1004, the PTE for 001000is located and read. In block 1005, the system 100 determines whetherthe PTE is valid. If no, the operating system is invoked to process aPTE fault in block 1007. The system 100 determines whether a marker isset in the marker field 910 (of FIG. 9) in block 1006. If no, thephysical address is retrieved from the PTE associated with the virtualaddress in block 1008, and the physical address is sent to the processorto access the memory location. If the marker is set, in block 1010, thephysical address and attributes and the remaining function bits areretrieved from all PTEs associated with the virtual address and sent tothe processor to access the memory location. Though the illustratedembodiments describe a system using 8 kB blocks having two adjacententries, alternate embodiments may use any suitable memory arrangementor scheme having blocks of any suitable size and numbers of entries. Inan exemplary embodiment, the number of entries is specified by writingto a configuration register (not shown). In another embodiment, a fieldin the PTE 901 specifies the number of entries.

While the embodiments herein have been described as substitutingmultiple adjacent separate PTEs with PTEs marked as members of avirtual-address-block responsive to detecting that multiple entries areadjacent in virtual and physical memory spaces, and hence being able tobe translated by a common hardware translation entry, it is contemplatedthat in at least one embodiment, and operating system uses memoryallocation pools corresponding to virtual-address-blocks. In accordancewith such an embodiment, the operating system allocates avirtual-address-block responsive to memory needs by software running ona system. When a virtual address block is allocated, the operatingsystem immediately installs a plurality of page table entries PTEs whichare marked as members of a virtual-address-block.

FIG. 11 illustrates an exemplary embodiment of a computer programproduct 1100 that includes a computer usable/readable medium 1102 withprogram code logic 1104 written therein.

The technical effects and benefits of the methods and systems describedabove allow large pages to be managed directly in the hardware of thesystem such that the operating system does not need to incorporatemanagement of large pages at the operating system level. Thus, greaterutilization of the TLB may be achieved as a given number of TLB entriesmay translate a larger address space.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of onemore other features, integers, steps, operations, element components,and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

The flow diagrams depicted herein are just one example. There may bemany variations to this diagram or the steps (or operations) describedtherein without departing from the spirit of the invention. Forinstance, the steps may be performed in a differing order or steps maybe added, deleted or modified. All of these variations are considered apart of the claimed invention.

While the preferred embodiment to the invention had been described, itwill be understood that those skilled in the art, both now and in thefuture, may make various improvements and enhancements which fall withinthe scope of the claims which follow. These claims should be construedto maintain the proper protection for the invention first described.

What is claimed is:
 1. A computer implemented method for accessingmemory locations, the method comprising: identifying, by a processor, afirst page table entry (PTE) of a page table for translating virtualaddresses to main storage addresses, the page table comprising a secondPTE contiguous with the first page table entry; determining, with theprocessor, whether the first PTE may be joined with the second PTE, thedetermining based on the respective first page and second page of mainstorage being contiguous, the determining including confirming that thefirst PTE and the second PTE are valid; and setting a respective markerin each of the first PTE and the second PTE in the page table forindicating that the main storage pages identified by the first PTE andthe second PTE are contiguous, wherein the first PTE and the second PTEeach comprise a respective physical address field, and wherein a firstvalue that is stored in the physical address field of the first PTE isdifferent from a second value that is stored in the physical addressfield of the second PTE.
 2. The method of claim 1, wherein the methodfurther comprises executing a translation lookaside buffer (TLB)invalidate instruction for invalidating TLB entries associated with thefirst PTE and second PTE.
 3. The method of claim 1, wherein the methodfurther comprises starting a memory access routine for a first virtualaddress stored in the first page table entry (PTE) in the page table,wherein the memory access routine performs: locating the first PTE inthe page table; determining, with the processor, whether the markerassociated with the first PTE is set; identifying a large page size of alarge page associated with the page table based on determining that themarker is set in the first PTE, wherein the large page consisting ofcontiguous pages comprising said first page and said second page;identifying a third PTE that is distinct from the first PTE and thesecond PTE, wherein the third PTE points to a third page that iscontiguous to the first page and the second page and comprises aphysical address field that stores a start location of the large pagecomprising the first page, second page, and third page based ondetermining that the marker associated with the first PTE is set; andobtaining a physical address of the large page of main storageidentified by the third PTE that points to the start location of thelarge page from the physical address field located in the third PTEbased on determining that the marker associated with the first PTE isset; wherein additional page properties of the large page comprise thefirst value and the second value that are stored in the physical addressfield in the first PTE and in the physical address field in the secondPTE, and further comprising obtaining the additional page properties ofthe large page from the physical address field located in the first PTEand the physical address field located in the second PTE.
 4. The methodof claim 3, wherein the method further comprises: storing translationinformation, marker information and said physical address in a TLB; andusing said stored translation information to translate virtual addressesassociated with the large page.
 5. The method of claim 3, wherein themarker is set in a plurality of PTEs indicating the main storage pagesidentified by the plurality of PTEs are contiguous, the plurality ofPTEs comprising each of the first PTE, the second PTE, and the thirdPTE.
 6. The method of claim 1, wherein the PTEs are any one of thirdPTEs in page tables of a hierarchy of translation tables, or fourth PTEsin a group of PTEs, each fourth PTE having a field identifying anassociated virtual address.